The present disclosure relates to systems and methods implemented in a monitoring engine configured with plug-ins to define functionality including rule-based configuration syntax adapted to intuitively and automatically deploy or launch the plug-ins as necessary in any software environment that requires a monitoring agent or daemon, a cloud infrastructure or the like. The present disclosure also relates to tracing multi-threaded asynchronous logging to a single file, by assigning a unique identification to each thread or process initiated and facilitating each logging according to a specific format to formulate a combination of all the different thread identifications into a master unique identification that is easily traceable through an entire log file.
Typically, monitoring agents and engines are intelligent agent software that is used to observe and report on computer equipment or operations of complex computer networks. Monitoring engines may be used in any software-based environment or cloud infrastructure to monitor particular functionalities and applications. For example, organizations deploying cloud-computing services use monitoring tools to ensure that these services are operating smoothly. Existing monitoring agent designs are inflexible or do not permit those who have little programming knowledge to either quickly or easily come up with new monitoring functionality to monitor a particular operation within the cloud infrastructure because the actual functionality is tied to the monitoring engine code.
Further, in a cloud infrastructure environment, multithreading is common practice in multitasking operating systems. Multithreading as a widespread programming and execution technique allows multiple threads to exist within the context of one process or operation that is being performed. These multiple threads share resources (hardware and software), yet execute independently. This multithreading technology when applied to a single process enables parallel execution on a multiprocessor system. A single process may have many different functions executing concurrently, allowing the application to better use the available hardware (multiple cores/processors). By this, threads can communicate between them, as they share the same memory. A significant problem that often arises in this situation is that every thread does not function in the same way when accessing shared objects and memory. Thus, although threading certainly helps with addressing complex, lengthy, independent problems, it introduces complexity in the operations, including use of multiple personal-identification numbers and internal-thread names. Multi-threaded asynchronous logging to a single file can be difficult to untangle as the log messages are serialized in the actual file, but the source, if not always clear, for identifying time and order or logged events, becomes complicated and it becomes even more difficult when the child thread itself forks other processes.
The present disclosure solves problems associated with ineffective monitoring engines used in a cloud infrastructure, by providing a flexible platform capable of separating the actual engine from the functionality providers, i.e., the plug-ins, by making the plug-ins easily configurable for any particular functionality desired or for other new functionalities by defining functionality from a predetermined rule-based program. The present disclosure also solves the complexities of troubleshooting multi-threaded processes, by assigning, a unique identification to each thread, process, or step of a rule and providing a logging interface in a specific format, so that the combination of all the identification numbers for the various threads or processes formulate a combined and unique identification, that is easily traceable through the entire log file.